// 必须导入封装的 request 函数（路径根据实际项目结构调整）
import { request } from "../../utils/request";

Page({
  data: {
    serviceInfo: {},
    remark: "",
    bedNo: ""
  },

  onLoad(options) {
    // 解析URL传递的orderData参数
    if (options.orderData) {
      const orderData = JSON.parse(decodeURIComponent(options.orderData));
      this.setData({
        serviceInfo: {
          name: orderData.serviceName,
          price: orderData.price,
          elderName: orderData.elderName,
          elderId: orderData.elderId,
          serviceId: orderData.serviceId,
          time: orderData.serviceTime,
          img: orderData.serviceImg,
          bedNo: orderData.bedNo,
          customerId:orderData.customerId 
        }
      });
    }
  },

  // 输入备注
  bindRemark(e) {
    this.setData({ remark: e.detail.value });
  },

  // 提交订单（核心逻辑）
  submitOrder() {
    const { serviceInfo, remark } = this.data;
    console.log("当前输入的备注：", remark); // 新增日志，查看是否有值
    // 1. 校验必填参数
    if (!serviceInfo.elderId || !serviceInfo.serviceId || !serviceInfo.time||!serviceInfo.bedNo) {
      wx.showToast({ title: '请完善服务信息', icon: 'none' });
      return;
    }
        // 2. 前端生成递增ID（核心逻辑）
        // const maxId = wx.getStorageSync('maxOrderId') || 0; // 从本地获取当前最大ID（初始0）
        // const newId = maxId + 1; // 新ID = 最大ID + 1
         // wx.setStorageSync('maxOrderId', newId); // 更新本地存储的最大ID
        // 提交订单时生成唯一ID（使用时间戳+随机数，降低重复概率）
//         const timestamp = Date.now();
//         const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
// const newId = `${timestamp}${random}`; // 例如：17300000000001234（字符串类型，避免大数字精度丢失）
// wx.setStorageSync('lastOrderId', newId); // 存储最后一个ID，而非递增的maxId
//         console.log("前端生成的递增ID：", newId);


// 3. 生成bizOrderNo并校验是否重复（新增核心逻辑）
  let bizOrderNo;
  // 获取本地存储的所有历史订单，提取已存在的bizOrderNo
  const existingOrders = wx.getStorageSync('orders') || [];
  const existingBizNos = existingOrders.map(order => order.orderNo); // 历史订单号列表

  // 循环生成订单号，直到不重复为止
  do {
    // 生成规则：ORD + 时间戳 + 3位随机数（原有规则保留）
    bizOrderNo = `ORD${Date.now()}${Math.floor(Math.random() * 1000)}`;
  } while (existingBizNos.includes(bizOrderNo)); // 若已存在则重新生成
  console.log("最终生成的不重复bizOrderNo：", bizOrderNo);
    // 3. 构建后端所需的订单参数
    const backendOrder = {
      // id:newId,//前端生成的递增id,同步给后端
      // bizOrderNo: `ORD${Date.now()}${Math.floor(Math.random() * 1000)}`, // 随机订单号
      bizOrderNo: bizOrderNo,// 替换为校验后的订单号
      serviceElderId: serviceInfo.elderId, // 老人ID
      extend1: serviceInfo.bedNo, // 床位号
      serviceItemId: serviceInfo.serviceId, // 服务ID
      amount: serviceInfo.price, // 订单金额
      expectedServiceTime: this.formatTime(serviceInfo.time), // 格式化服务时间
      customerId :serviceInfo.customerId,
      remark: remark, // 备注信息
      orderStatus: "0", // 待支付状态
      payStatus: "0" // 未支付状态
    };

    // 3. 调用封装的 request 函数提交订单（自动携带 Token）
    request("/greenold-order/order", backendOrder, "POST")
      .then(res => {
        // 4. 处理成功响应（依后端实际返回格式调整）
        if (res.code === 200) {
          
          // this.syncToLocal(res.data, serviceInfo); // 同步到本地
          // this.syncToLocal(backendOrder,serviceInfo);// 同步到本地
          wx.showToast({ title: '订单提交中...', icon: 'loading' });
          setTimeout(() => {
            wx.navigateTo({
                url: `/pages/ready-pay/ready-pay?&orderNo=${backendOrder.bizOrderNo}&amount=${backendOrder.amount}`
            });
        }, 1500);
        } else {
          wx.showToast({ title: res.msg || '提交失败', icon: 'none' });
        }
      })
      .catch(err => {
        // 5. 处理错误（如网络异常、Token过期等，request已封装自动跳转登录）
        console.error('提交订单失败：', err);
      });


  },

  // 同步订单到本地存储
  syncToLocal(backendOrder, serviceInfo) {
    const app = getApp();
    // 构建前端展示用的订单数据
    const frontOrder = {
      id: backendOrder.id,
      orderNo: backendOrder.bizOrderNo,
      title: serviceInfo.name,
      status: app.orderStatusMap?.[backendOrder.orderStatus] || "待支付",
      statusClass: app.statusClassMap?.[backendOrder.orderStatus] || "pending",
      worker: serviceInfo.elderName,
      serviceElderId: backendOrder.serviceElderId,
      time: serviceInfo.time,
      price: serviceInfo.price,
      priceType: "应付",
      imgUrl: serviceInfo.img,
      remark: backendOrder.remark,
      showCancel: true,
      showPay: true,
      showRefund: false,
      showDelete: false,
      cancelText: "取消订单",
      payText: "去支付"
    };

    // 更新全局订单列表并存储到本地
    if (!app.globalData.orders) app.globalData.orders = [];
    app.globalData.orders.unshift(frontOrder);
    wx.setStorageSync('orders', app.globalData.orders);

    // 跳转订单微信支付页
    wx.showToast({
      title: '订单提交成功',
      icon: 'success',
      duration: 1500,
      success: () => {
        setTimeout(() => wx.navigateTo({
           url: `/pages/ready-pay/ready-pay?orderId=${backendOrder.id}&orderNo=${backendOrder.bizOrderNo}&amount=${backendOrder.amount}`
          }), 1500);
      }
    });
  },

  // 时间格式转换（适配后端要求）
  formatTime(timeStr) {
    const [datePart, timePart] = timeStr.split(' ');
    // 假设后端需要 "YYYY-MM-DD HH:mm:ss" 格式
    return `${datePart} ${timePart}:00`;
  }
});